package com.scujj.cs6.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.scujj.cs6.model.entity.Question;
import com.scujj.cs6.model.vo.FollowQuestionVo;
import com.scujj.cs6.model.vo.QuestionVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author FlanChan
* @description 针对表【question】的数据库操作Mapper
* @createDate 2025-03-25 21:21:24
* @Entity com.scujj.cs6.entity.Question
*/
public interface QuestionMapper extends BaseMapper<Question> {
    /**
     * 分页查询问题列表
     */
    List<QuestionVo> queryQuestions(
            @Param("tags") List<String> tags,
            @Param("topic") String topic,
            @Param("page") int page,
            @Param("size") int size
    );

    /**
     * 计算符合条件的问题总数
     */
    int countQuestions(
            @Param("tags") List<String> tags,
            @Param("topic") String topic
    );

    /**
     * 查询最新5个问题
     */
    List<QuestionVo> selectTop5Q();

    /**
     * 查询我的问题
     */
    List<QuestionVo> selectMyQuestions(
            @Param("userId") Long userId,
            @Param("page") int page,
            @Param("size") int size
    );

    /**
     * 计算我的问题总数
     */
    int countMyQuestions(@Param("userId") Long userId);

    /**
     * 查询当前用户所关注的用户的提问
     */
    List<FollowQuestionVo> selectMyFollowedQuestions(@Param("userId") Long userId, @Param("page") int page, @Param("size") int size);

    /**
     * 计算当前用户所关注的用户的提问总数
     * @param userId
     * @return
     */
    int countFollowedQuestions(@Param("userId") Long userId);

    /**
     * 删除问题及其关联
     */
    void deleteQuestionWithRelations(@Param("id") Long id);

    /**
     * 查询问题详情
     */
    QuestionVo selectQuestionById(@Param("id") Long id);
}




